/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.latesis.web.controller;

import com.latesis.bean.AlertaBean;
import com.latesis.bean.ChoferBean;
import com.latesis.bean.EstadoBean;
import com.latesis.bean.GrupoBean;
import com.latesis.bean.MensajeBean;
import com.latesis.bean.MovilBean;
import com.latesis.bean.OperadorBean;
import com.latesis.bean.PropietarioBean;
import com.latesis.web.service.MantenimientoService;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Alan - Desarrollo
 */
@ManagedBean(name="MantenimientoController")
@SessionScoped
public class MantenimientoController {
    
    private  MantenimientoService das;
    // Selected users that will be removed 
    private PropietarioBean[] selectedPropietarios; 
    private AlertaBean[] selectedAlertas;
    private ChoferBean[] selectedChoferes;
    private EstadoBean[] selectedEstados;
    private OperadorBean[] selectedOperadores;
    private MensajeBean[] selectedMensajes;
    private GrupoBean[] selectedGrupos;
    private MovilBean[] selectedMoviles;
    // Lazy loading user list
    
    private LazyPropietarioDataModel lazyModel; 
    private LazyAlertaDataModel lazyAlertaModel;
    private LazyChoferDataModel lazyChoferModel;
    private LazyEstadoDataModel lazyEstadoModel;
    private LazyOperadorDataModel lazyOperadorModel;
    private LazyMensajeDataModel lazyMensajeModel;
    private LazyGrupoDataModel lazyGrupoModel;
    private LazyMovilDataModel lazyMovilModel;
    // Creating new user
    private PropietarioBean newPropietario = new PropietarioBean();
    private AlertaBean newAlerta = new AlertaBean();
    private ChoferBean newChofer = new ChoferBean();
    private EstadoBean newEstado = new EstadoBean();
    private OperadorBean newOperador = new OperadorBean();
    private MensajeBean newMensaje = new MensajeBean();
    private GrupoBean newGrupo = new GrupoBean();
    private MovilBean newMovil = new MovilBean();
    // Selected user that will be updated
    private PropietarioBean selectedPropietario = new PropietarioBean();
    private AlertaBean selectedAlerta = new AlertaBean();
    private ChoferBean selectedChofer = new ChoferBean();
    private EstadoBean selectedEstado = new EstadoBean();
    private OperadorBean selectedOperador = new OperadorBean();
    private MensajeBean selectedMensaje = new MensajeBean();
    private GrupoBean selectedGrupo = new GrupoBean();
    private MovilBean selectedMovil = new MovilBean();
    
    
    public void onRowSelect(SelectEvent event) {
        PropietarioBean bean = ((PropietarioBean) event.getObject());
        System.out.println("propietario: " + bean.getApellidoMaterno());
//        setSelectedPropietario(bean);
    }
    
    public void onRowSelectTwo(PropietarioBean bean) {
        System.out.println("propietario2: " + bean.getApellidoMaterno());
        setSelectedPropietario(bean);
    }
    
    public void onRowSelectAlerta(AlertaBean bean) {
        setSelectedAlerta(bean);
    }
    
    public void onRowSelectChofer(ChoferBean bean) {
        setSelectedChofer(bean);
    }
    
    public void onRowSelectEstado(EstadoBean bean) {
        setSelectedEstado(bean);
    }
    
    public void onRowSelectOperador(OperadorBean bean) {
        setSelectedOperador(bean);
    }
    
    public void onRowSelectMensaje(MensajeBean bean) {
        setSelectedMensaje(bean);
    }
    
    public void onRowSelectMovil(MovilBean bean) {
        setSelectedMovil(bean);
    }
    
    public void onRowSelectGrupo(GrupoBean bean) {
        setSelectedGrupo(bean);
    }

    /**
     * Default constructor
     */
    public MantenimientoController() {

    }

    /**
     * Initializing Data Access Service for LazyUserDataModel class
     * role list for UserContoller class
     */
    @PostConstruct
    public void init(){
        setLazyModel(new LazyPropietarioDataModel(getDas()));
        setLazyAlertaModel(new LazyAlertaDataModel(getDas()));
        setLazyChoferModel(new LazyChoferDataModel(getDas()));
        setLazyEstadoModel(new LazyEstadoDataModel(getDas()));
        setLazyOperadorModel(new LazyOperadorDataModel(getDas()));
        setLazyMensajeModel(new LazyMensajeDataModel(getDas()));
        setLazyGrupoModel(new LazyGrupoDataModel(getDas()));
        setLazyMovilModel(new LazyMovilDataModel(getDas()));
    }

    /**
     * Create, Update and Delete operations
     */
    public void doCreateUser() {        
        getDas().guardarPropietario(getNewPropietario());
        setNewPropietario(new PropietarioBean());
    }
    
    /**
     * Create, Update and Delete operations
     */
    public void doCreateAlerta() {        
        getDas().guardarAlerta(getNewAlerta());
        setNewAlerta(new AlertaBean());
    }
    
    public void doCreateChofer() {        
        getDas().guardarChofer(getNewChofer());
        setNewChofer(new ChoferBean());
    }
    
    public void doCreateEstado() {        
        getDas().guardarEstado(getNewEstado());
        setNewEstado(new EstadoBean());
    }
    
    public void doCreateOperador() {        
        getDas().guardarOperador(getNewOperador());
        setNewOperador(new OperadorBean());
    }
    
    public void doCreateMensaje() {        
        getDas().guardarMensaje(getNewMensaje());
        setNewMensaje(new MensajeBean());
    }
    
    public void doCreateGrupo() {        
        getDas().guardarGrupo(getNewGrupo());
        setNewGrupo(new GrupoBean());
    }
    
    public void doCreateMovil() {        
        getDas().guardarMovil(getNewMovil());
        setNewMovil(new MovilBean());
    }
        
    /**
     *
     * @param actionEvent
     */
    public void doUpdateUser(ActionEvent actionEvent){
            getDas().guardarPropietario(getSelectedPropietario());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doUpdateAlerta(ActionEvent actionEvent){
            getDas().guardarAlerta(getSelectedAlerta());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doUpdateChofer(ActionEvent actionEvent){
            getDas().guardarChofer(getSelectedChofer());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doUpdateEstado(ActionEvent actionEvent){
            getDas().guardarEstado(getSelectedEstado());
    }
    
     public void doUpdateMensaje(ActionEvent actionEvent){
            getDas().guardarMensaje(getSelectedMensaje());
    }
     
      public void doUpdateMovil(ActionEvent actionEvent){
            getDas().guardarMovil(getSelectedMovil());
    }
      
       public void doUpdateGrupo(ActionEvent actionEvent){
            getDas().guardarGrupo(getSelectedGrupo());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doUpdateOperador(ActionEvent actionEvent){
            getDas().guardarOperador(getSelectedOperador());
    }
        
    /**
     *
     * @param actionEvent
     */
    public void doDeleteUsers(ActionEvent actionEvent){
            getDas().eliminarPropietario(getSelectedPropietarios());
    }     
    
    /**
     *
     * @param actionEvent
     */
    public void doDeleteAlerta(ActionEvent actionEvent){
            getDas().eliminarAlerta(getSelectedAlertas());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doDeleteChofer(ActionEvent actionEvent){
            getDas().eliminarChofer(getSelectedChoferes());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doDeleteEstado(ActionEvent actionEvent){
            getDas().eliminarEstado(getSelectedEstados());
    }
    
    /**
     *
     * @param actionEvent
     */
    public void doDeleteOperador(ActionEvent actionEvent){
            getDas().eliminarOperador(getSelectedOperadores());
    }
    
    public void doDeleteMensaje(ActionEvent actionEvent){
            getDas().eliminarMensaje(getSelectedMensajes());
    }
    
    public void doDeleteMovil(ActionEvent actionEvent){
            getDas().eliminarMovil(getSelectedMoviles());
    }
    
    public void doDeletegrupo(ActionEvent actionEvent){
            getDas().eliminarGrupo(getSelectedGrupos());
    }   

    /**
     *
     * @return
     */
    public PropietarioBean getNewUser() {
            return getNewPropietario();
    }

    /**
     *
     * @param newUser
     */
    public void setNewUser(PropietarioBean newUser) {
            this.setNewPropietario(newUser); 
    }
       
    /**
     *
     * @return LazyDataModel
     */
    public LazyPropietarioDataModel getLazyModel() {
            return lazyModel;
    }

    /**
     * @param das the das to set
     */
    public void setDas(MantenimientoService das) {
        this.das = das;
    }

  

    /**
     * @param lazyModel the lazyModel to set
     */
    public void setLazyModel(LazyPropietarioDataModel lazyModel) {
        this.lazyModel = lazyModel;
    }

    /**
     * @param newPropietario the newPropietario to set
     */
    public void setNewPropietario(PropietarioBean newPropietario) {
        this.newPropietario = newPropietario;
    }

    /**
     * @return the selectedPropietarios
     */
    public PropietarioBean[] getSelectedPropietarios() {
        return selectedPropietarios;
    }



    /**
     * @param selectedPropietario the selectedPropietario to set
     */
    public void setSelectedPropietario(PropietarioBean selectedPropietario) {
        System.out.println("setSelectedPropietario: " + selectedPropietario.getApellidoMaterno());
        this.selectedPropietario = selectedPropietario;
    }

    /**
     * @return the das
     */
    public MantenimientoService getDas() {
        return das;
    }


    /**
     * @return the selectedAlertas
     */
    public AlertaBean[] getSelectedAlertas() {
        return selectedAlertas;
    }

    /**
     * @param selectedAlertas the selectedAlertas to set
     */
    public void setSelectedAlertas(AlertaBean[] selectedAlertas) {
        this.setSelectedAlertas(selectedAlertas);
    }

    /**
     * @return the selectedChoferes
     */
    public ChoferBean[] getSelectedChoferes() {
        return selectedChoferes;
    }

    /**
     * @param selectedChoferes the selectedChoferes to set
     */
    public void setSelectedChoferes(ChoferBean[] selectedChoferes) {
        this.setSelectedChoferes(selectedChoferes);
    }

    /**
     * @return the selectedEstados
     */
    public EstadoBean[] getSelectedEstados() {
        return selectedEstados;
    }

    /**
     * @param selectedEstados the selectedEstados to set
     */
    public void setSelectedEstados(EstadoBean[] selectedEstados) {
        this.setSelectedEstados(selectedEstados);
    }

    /**
     * @return the selectedOperadores
     */
    public OperadorBean[] getSelectedOperadores() {
        return selectedOperadores;
    }

    /**
     * @param selectedOperadores the selectedOperadores to set
     */
    public void setSelectedOperadores(OperadorBean[] selectedOperadores) {
        this.setSelectedOperadores(selectedOperadores);
    }

    /**
     * @return the lazyAlertaModel
     */
    public LazyAlertaDataModel getLazyAlertaModel() {
        return lazyAlertaModel;
    }

    /**
     * @param lazyAlertaModel the lazyAlertaModel to set
     */
    public void setLazyAlertaModel(LazyAlertaDataModel lazyAlertaModel) {
        this.lazyAlertaModel = lazyAlertaModel;
    }

    /**
     * @return the lazyChoferModel
     */
    public LazyChoferDataModel getLazyChoferModel() {
        return lazyChoferModel;
    }

    /**
     * @param lazyChoferModel the lazyChoferModel to set
     */
    public void setLazyChoferModel(LazyChoferDataModel lazyChoferModel) {
        this.lazyChoferModel = lazyChoferModel;
    }

    /**
     * @return the lazyEstadoModel
     */
    public LazyEstadoDataModel getLazyEstadoModel() {
        return lazyEstadoModel;
    }

    /**
     * @param lazyEstadoModel the lazyEstadoModel to set
     */
    public void setLazyEstadoModel(LazyEstadoDataModel lazyEstadoModel) {
        this.lazyEstadoModel = lazyEstadoModel;
    }

    /**
     * @return the lazyOperadorModel
     */
    public LazyOperadorDataModel getLazyOperadorModel() {
        return lazyOperadorModel;
    }

    /**
     * @param lazyOperadorModel the lazyOperadorModel to set
     */
    public void setLazyOperadorModel(LazyOperadorDataModel lazyOperadorModel) {
        this.lazyOperadorModel = lazyOperadorModel;
    }

    /**
     * @return the newPropietario
     */
    public PropietarioBean getNewPropietario() {
        return newPropietario;
    }

    /**
     * @return the newAlerta
     */
    public AlertaBean getNewAlerta() {
        return newAlerta;
    }

    /**
     * @param newAlerta the newAlerta to set
     */
    public void setNewAlerta(AlertaBean newAlerta) {
        this.newAlerta = newAlerta;
    }

    /**
     * @return the newChofer
     */
    public ChoferBean getNewChofer() {
        return newChofer;
    }

    /**
     * @param newChofer the newChofer to set
     */
    public void setNewChofer(ChoferBean newChofer) {
        this.newChofer = newChofer;
    }

    /**
     * @return the newEstado
     */
    public EstadoBean getNewEstado() {
        return newEstado;
    }

    /**
     * @param newEstado the newEstado to set
     */
    public void setNewEstado(EstadoBean newEstado) {
        this.newEstado = newEstado;
    }

    /**
     * @return the newOperador
     */
    public OperadorBean getNewOperador() {
        return newOperador;
    }

    /**
     * @param newOperador the newOperador to set
     */
    public void setNewOperador(OperadorBean newOperador) {
        this.newOperador = newOperador;
    }

    /**
     * @return the selectedAlerta
     */
    public AlertaBean getSelectedAlerta() {
        return selectedAlerta;
    }

    /**
     * @param selectedAlerta the selectedAlerta to set
     */
    public void setSelectedAlerta(AlertaBean selectedAlerta) {
        this.selectedAlerta = selectedAlerta;
    }

    /**
     * @return the selectedChofer
     */
    public ChoferBean getSelectedChofer() {
        return selectedChofer;
    }

    /**
     * @param selectedChofer the selectedChofer to set
     */
    public void setSelectedChofer(ChoferBean selectedChofer) {
        this.selectedChofer = selectedChofer;
    }

    /**
     * @return the selectedEstado
     */
    public EstadoBean getSelectedEstado() {
        return selectedEstado;
    }

    /**
     * @param selectedEstado the selectedEstado to set
     */
    public void setSelectedEstado(EstadoBean selectedEstado) {
        this.selectedEstado = selectedEstado;
    }

    /**
     * @return the selectedOperador
     */
    public OperadorBean getSelectedOperador() {
        return selectedOperador;
    }

    /**
     * @param selectedOperador the selectedOperador to set
     */
    public void setSelectedOperador(OperadorBean selectedOperador) {
        this.selectedOperador = selectedOperador;
    }

    /**
     * @return the selectedPropietario
     */
    public PropietarioBean getSelectedPropietario() {
        return selectedPropietario;
    }

    /**
     * @param selectedPropietarios the selectedPropietarios to set
     */
    public void setSelectedPropietarios(PropietarioBean[] selectedPropietarios) {
        this.selectedPropietarios = selectedPropietarios;
    }

 


    /**
     * @return the selectedMensajes
     */
    public MensajeBean[] getSelectedMensajes() {
        return selectedMensajes;
    }

    /**
     * @param selectedMensajes the selectedMensajes to set
     */
    public void setSelectedMensajes(MensajeBean[] selectedMensajes) {
        this.selectedMensajes = selectedMensajes;
    }

    /**
     * @return the selectedGrupos
     */
    public GrupoBean[] getSelectedGrupos() {
        return selectedGrupos;
    }

    /**
     * @param selectedGrupos the selectedGrupos to set
     */
    public void setSelectedGrupos(GrupoBean[] selectedGrupos) {
        this.selectedGrupos = selectedGrupos;
    }

    /**
     * @return the selectedMoviles
     */
    public MovilBean[] getSelectedMoviles() {
        return selectedMoviles;
    }

    /**
     * @param selectedMoviles the selectedMoviles to set
     */
    public void setSelectedMoviles(MovilBean[] selectedMoviles) {
        this.selectedMoviles = selectedMoviles;
    }

    /**
     * @return the lazyMensajeModel
     */
    public LazyMensajeDataModel getLazyMensajeModel() {
        return lazyMensajeModel;
    }

    /**
     * @param lazyMensajeModel the lazyMensajeModel to set
     */
    public void setLazyMensajeModel(LazyMensajeDataModel lazyMensajeModel) {
        this.lazyMensajeModel = lazyMensajeModel;
    }

    /**
     * @return the lazyGrupoModel
     */
    public LazyGrupoDataModel getLazyGrupoModel() {
        return lazyGrupoModel;
    }

    /**
     * @param lazyGrupoModel the lazyGrupoModel to set
     */
    public void setLazyGrupoModel(LazyGrupoDataModel lazyGrupoModel) {
        this.lazyGrupoModel = lazyGrupoModel;
    }

    /**
     * @return the lazyMovilModel
     */
    public LazyMovilDataModel getLazyMovilModel() {
        return lazyMovilModel;
    }

    /**
     * @param lazyMovilModel the lazyMovilModel to set
     */
    public void setLazyMovilModel(LazyMovilDataModel lazyMovilModel) {
        this.lazyMovilModel = lazyMovilModel;
    }

    /**
     * @return the newMensaje
     */
    public MensajeBean getNewMensaje() {
        return newMensaje;
    }

    /**
     * @param newMensaje the newMensaje to set
     */
    public void setNewMensaje(MensajeBean newMensaje) {
        this.newMensaje = newMensaje;
    }

    /**
     * @return the newGrupo
     */
    public GrupoBean getNewGrupo() {
        return newGrupo;
    }

    /**
     * @param newGrupo the newGrupo to set
     */
    public void setNewGrupo(GrupoBean newGrupo) {
        this.newGrupo = newGrupo;
    }

    /**
     * @return the newMovil
     */
    public MovilBean getNewMovil() {
        return newMovil;
    }

    /**
     * @param newMovil the newMovil to set
     */
    public void setNewMovil(MovilBean newMovil) {
        this.newMovil = newMovil;
    }

    /**
     * @return the selectedMensaje
     */
    public MensajeBean getSelectedMensaje() {
        return selectedMensaje;
    }

    /**
     * @param selectedMensaje the selectedMensaje to set
     */
    public void setSelectedMensaje(MensajeBean selectedMensaje) {
        this.selectedMensaje = selectedMensaje;
    }

    /**
     * @return the selectedGrupo
     */
    public GrupoBean getSelectedGrupo() {
        return selectedGrupo;
    }

    /**
     * @param selectedGrupo the selectedGrupo to set
     */
    public void setSelectedGrupo(GrupoBean selectedGrupo) {
        this.selectedGrupo = selectedGrupo;
    }

    /**
     * @return the selectedMovil
     */
    public MovilBean getSelectedMovil() {
        return selectedMovil;
    }

    /**
     * @param selectedMovil the selectedMovil to set
     */
    public void setSelectedMovil(MovilBean selectedMovil) {
        this.selectedMovil = selectedMovil;
    }




   


}
